CSS Scroll Snap ã®åãè§£ãæŸã¡ãèªç¶ã§ç©çé§åã®ã¹ã¯ããŒã«ããŠã§ãã€ã³ã¿ãŒãã§ã€ã¹ã«ããããã倿§ãªãã©ãããã©ãŒã ã§æµãããããªåããšäºæž¬å¯èœãªã³ã³ãã³ãé 眮ã§ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããŸãã
CSS Scroll Snap ã®ã¢ãŒã¡ã³ã¿ã ãšã³ãžã³ïŒã°ããŒãã«ãŠã§ãã®ããã®èªç¶ãªã¹ã¯ããŒã«ç©çåŠã®æ§ç¯
åºå€§ã§é²åãç¶ãããŠã§ãéçºã®äžçã«ãããŠãçã«æ²¡å ¥çã§çŽæçãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã远æ±ããæ ã¯çµ¶ãéãªãç¶ããŠããŸããé·å¹ŽããŠã§ãã¹ã¯ããŒã«ã¯ããã®åºæ¬æ©èœã«ããããããããã€ãã£ãã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ããã¹ã¯ããããœãããŠã§ã¢ã§äœéšãããæµãããããªç©çé§åã®ã€ã³ã¿ã©ã¯ã·ã§ã³ãšã¯æããã«ç°ãªããã®ã§ãããåŸæ¥ã®ãŠã§ãã¹ã¯ããŒã«ã®ããããããããã忢ã»éå§ã®æ§è³ªã¯ããããŒãäžæãããããã²ãŒã·ã§ã³ã劚ããæçµçã«ã¯ããèšèšãããã€ã³ã¿ãŒãã§ã€ã¹ããæãªãããå¯èœæ§ããããŸããããããããããŠã§ãããåããŠããç©ççãªç©äœã®æºè¶³ã®ããæ £æ§ãåªé ãªæžéããããŠäºæž¬å¯èœãªåæ¢ãæš¡å£ã§ãããšãããã©ãã§ããããïŒCSS Scroll Snapã匷åãªãã€ãã£ããã©ãŠã¶æ©èœããããŠãã®ãã°ãã°èŠéããããã¡ãªç§å¯å µåšãããªãã¡èªç¶ãªã¹ã¯ããŒã«ç©çåŠãæäŸããçµã¿èŸŒã¿ã®ã¢ãŒã¡ã³ã¿ã ãšã³ãžã³ãç»å ŽããŸãã
ãã®å æ¬çãªã¬ã€ãã§ã¯ãCSS Scroll Snap ãåãªãã¹ãããã³ã°ãè¶ ããŠãããèªç¶ã§ç©çåŠã«åºã¥ããã€ã³ã¿ã©ã¯ã·ã§ã³ã¢ãã«ãåãå ¥ããããšã§ãã¹ã¯ããŒã«ãšã¯ã¹ããªãšã³ã¹ãæ ¹æ¬çã«ã©ã®ããã«å€é©ããããæãäžããŸãããã®ã³ã¢ããããã£ãå®è·µçãªå®è£ ãäžçäžã®ãŠãŒã¶ãŒã«ãšã£ãŠã®æ·±ãã¡ãªããããããŠçã«ã°ããŒãã«ã§ã€ã³ã¯ã«ãŒã·ãã§æ¥œãããŠã§ãã€ã³ã¿ãŒãã§ã€ã¹ãæ§ç¯ããããšãç®æãéçºè ã«ãšã£ãŠã®æŠç¥çèæ ®äºé ãæ¢æ±ããŸãã
ãã©ãã€ã ã·ããã®çè§£ïŒ abrupt ãªåæ¢ããèªç¶ãªãããŒãž
CSS Scroll Snap ãåºãæ¡çšãããããã«ãªãåã¯ãå¶åŸ¡ããããã»ã°ã¡ã³ãåãããã¹ã¯ããŒã«ãšã¯ã¹ããªãšã³ã¹ãå®çŸããã«ã¯ãéåžžãè€éã§ããã©ãŒãã³ã¹ã«è² è·ã®ããã JavaScript ãœãªã¥ãŒã·ã§ã³ãå¿ èŠã§ããããããã®ã¹ã¯ãªããã¯ãã¹ã¯ããŒã«äœçœ®ãç¶¿å¯ã«è¿œè·¡ããæžéæ²ç· ãèšç®ããããã°ã©ã ã§ã¹ã¯ããŒã«ãªãã»ããã調æŽããŠããŸããã广çã§ã¯ãããŸããããããã©ãŒãã³ã¹ã®ãªãŒããŒããããå°å ¥ãããã©ãŠã¶ã®ãã€ãã£ãã¬ã³ããªã³ã°ãšã®çµ±åãå°ãªãæããããç°ãªãããã€ã¹ããŠãŒã¶ãŒå ¥åéã§ãã®ãæè§Šããç°ãªã£ãŠããŸããã
CSS Scroll Snap ã¯ã宣èšçã§ãããã©ãŒãã³ã¹ãé«ããæ¬è³ªçã«ãã€ãã£ããªä»£æ¿ææ®µãæäŸããŸããããã«ããããŠã§ãéçºè ã¯ã¹ã¯ããŒã«å¯èœãªã³ã³ããå ã«æç¢ºãªã¹ããããã€ã³ããå®çŸ©ã§ãããã©ãŠã¶èªäœãã¹ãããã³ã°ã®è€éãªã¡ã«ããºã ã管çã§ããããã«ãªããŸããããããããã¯åã«ã¹ã¯ããŒã«ãæå®ããããã€ã³ãã«åŒ·å¶ããããšã§ã¯ãããŸããããã㯠*ã©ã®ããã«* ãã©ãŠã¶ãããã«å°éããããšããããšã§ããææ°ã®ãã©ãŠã¶ã¯ãæŽç·Žãããã¬ã³ããªã³ã°ãšã³ãžã³ãéããŠãã¹ã¯ããŒã«ã¹ãããã䜿çšããéã«èªç¶ãªæžéæ²ç· ãé©çšããç©ççãªç©äœã«äœçšããæ £æ§ãæ©æŠãã·ãã¥ã¬ãŒãããŸãããããåäœããŠãããã¢ãŒã¡ã³ã¿ã ãšã³ãžã³ãã§ããéåžžã®ã¹ã¯ããŒã«ãçã«çµ±åãããçŽæçã«æãããããšã¯ã¹ããªãšã³ã¹ã«å€ããèŠããªãåã§ãã
CSS Scroll Snap ãšã¯å ·äœçã«äœã§ããïŒ
CSS Scroll Snap ã®æ žå¿ã¯ãã¹ã¯ããŒã«ã³ã³ãããã¹ã¯ããŒã«æã«ç¹å®ã®ãã€ã³ãã«ã¹ãããããããã«æå®ã§ãã CSS ã¢ãžã¥ãŒã«ã§ããç»åã«ã«ãŒã»ã«ãã©ã³ãã£ã³ã°ããŒãžã®ãã«ã¹ã¯ãªãŒã³ã»ã¯ã·ã§ã³ã®ã·ãªãŒãºããŸãã¯æ°Žå¹³ã¡ãã¥ãŒããŒãæ³åããŠãã ãããã¢ã€ãã ã®éäžã§ã³ã³ãã³ããä»»æã«åæ¢ããã®ã§ã¯ãªããã¹ã¯ããŒã«ã¹ãããã«ãããã¢ã€ãã ãŸãã¯ã¢ã€ãã ã®äžéšãåžžã«å®å šã«è¡šç€ºãããããã«ä¿èšŒãããŸãããã®äžè²«æ§ã¯çŸçã« pleasing ã§ããã ãã§ãªãããŠãŒã¶ããªãã£ã«ãéåžžã«åœ±é¿ãäžããŸãã
ããããéæ³ã¯ã¹ããããã€ã³ããžã®æ ã«ãããŸãããŠãŒã¶ãŒãã¹ã¯ããŒã«ãžã§ã¹ãã£ãŒïŒããŠã¹ãã€ãŒã«ã¹ã¯ããŒã«ããã©ãã¯ãããã¹ã¯ã€ããã¿ããã¹ã¯ãªãŒã³ã§ã®ãã©ãã°ãªã©ïŒãéå§ãããããé¢ããšããã©ãŠã¶ã¯æå¯ãã®ã¹ããããã€ã³ãã«å³åº§ã«ãžã£ã³ãããã ãã§ã¯ãããŸããã代ããã«ãæžè¡°ããé床ã§ã¹ã¯ããŒã«ãç¶ç¶ããæå®ãããã¹ãããã¿ãŒã²ããã«å°éããŠæŽåãããŸã§åªé ã«æžéããŸããæ £æ§ã®æèŠã垯ã³ããã®æµãããããªåãã¯ãèªç¶ãªã¹ã¯ããŒã«ç©çåŠãšåŒã°ãããã®ã§ããããŠã§ãã€ã³ã¿ã©ã¯ã·ã§ã³ããã€ãã£ãã¢ããªã±ãŒã·ã§ã³ã®ãããšåããããå¿çæ§ãé«ãæºè¶³ã®ãããã®ã«ããŠããŸãã
ã¢ãŒã¡ã³ã¿ã ãšã³ãžã³ïŒãã©ãŠã¶ã§ã®çŸå®äžçã®ç©çåŠã®æš¡å£
CSS Scroll Snap ã«ããããã¢ãŒã¡ã³ã¿ã ãšã³ãžã³ãã®æŠå¿µã¯ãçŸå®äžçã®ç©çåŠã®åºæ¬ã§ããæ £æ§ ãšæžéã®åçãã·ãã¥ã¬ãŒããããã©ãŠã¶ã®åºæã®èœåãæããŸããã·ã§ããã³ã°ã«ãŒããæŒããšãé¢ããç¬éã«åæ¢ããããã§ã¯ãããŸãããæ©æŠã®ããã«åŸã ã«é ããªããæçµçã«åæ¢ãããŸã§åãç¶ããŸããã¹ã¯ããŒã«ã¹ãããã¡ã«ããºã ã¯åæ§ã®åçãé©çšããŸãã
- æ £æ§ã·ãã¥ã¬ãŒã·ã§ã³ïŒ ãŠãŒã¶ãŒãã¹ã¯ããŒã«ãžã§ã¹ãã£ãŒãå®äºãããšããã©ãŠã¶ã¯ãã®ãžã§ã¹ãã£ãŒã®éåºŠãšæ¹åãåæé床ãšããŠè§£éããŸãã abrupt ã«åæ¢ããã®ã§ã¯ãªããã¹ã¯ããŒã«å¯èœãªã³ã³ãã³ãã¯ãã¢ãŒã¡ã³ã¿ã ããæã¡ç¶ããŠç§»åããŸãã
- åªé ãªæžéïŒ ãã©ãŠã¶ã¯æ¬¡ã«æ©æŠãã·ãã¥ã¬ãŒãããå éšã€ãŒãžã³ã°é¢æ° ãé©çšããã¹ã¯ããŒã«ãåŸã ã«é ããªãããã«ããŸãããã®æžéã¯ç·åœ¢ã§ã¯ãããŸãããã¹ã ãŒãºãªæ²ç·ã«åŸãããšãå€ããé·ç§»ãä¿¡ããããªãã»ã©èªç¶ã§ææ©çã«æããããŸãã
- ã¿ãŒã²ããé çœ®ïŒ ã¹ã¯ããŒã«ãæžéããã«ã€ããŠããã©ãŠã¶ã®ã¹ãããããžãã¯ã¯ãæå®ããã CSS ããããã£ã«åºã¥ããŠãæãé©åã§æãè¿ãã¹ããããã€ã³ããèå¥ããŸããæ¬¡ã«ãã³ã³ãã³ãããã®ã¿ãŒã²ããã«æ£ç¢ºã«æŽåããããã«ã¹ã ãŒãºã«ã¬ã€ããããç©çé§åã®ã¢ãŒã·ã§ã³ãå®äºããŸãã
ãŠãŒã¶ãŒå ¥åãã·ãã¥ã¬ãŒããããç©çåŠããããŠå®çŸ©ãããã¹ããããã€ã³ãã®éã®ãã®æŽç·Žãããçžäºäœçšã¯ãå¶çŽã®ãªãã¹ã¯ããŒã«ãããã¯ããã«é åçã§ã jarring ã§ãªããšã¯ã¹ããªãšã³ã¹ããããããŸãããŠãŒã¶ãŒã¯æ£ç¢ºãªèª¿æŽãè¡ãå¿ èŠããªããããèªç¥è² è·ã軜æžãããŸããã·ã¹ãã ãæå³ããããã¥ãŒã«åªããã¬ã€ãããŸãã
CSS Scroll Snap ã®ç¿åŸïŒå¿ é ããããã£ãšãã®åœ±é¿
CSS Scroll Snap ã®ã¢ãŒã¡ã³ã¿ã ãšã³ãžã³ã®å¯èœæ§ãæå€§éã«åŒãåºãããã«ãéçºè ã¯ããã€ãã®ã³ã¢ CSS ããããã£ãçè§£ããé©çšããå¿ èŠããããŸãããããã®ããããã£ã¯å調ããŠåäœããã¹ã¯ããŒã«ã³ã³ãããšãã®åèŠçŽ ã®åäœãå®çŸ©ããæçµçã«ã¯èªç¶ãªã¹ã¯ããŒã«ç©çåŠã®æè§Šã«åœ±é¿ãäžããŸãã
1. scroll-snap-type ïŒã¹ã¯ããŒã«ã³ã³ããã«é©çšïŒ
ããã¯ãã¹ã¯ããŒã«ã³ã³ããã§ã¹ã¯ããŒã«ã¹ããããæå¹ã«ããåºæ¬çãªããããã£ã§ããã¹ããããçºçãã軞ãšãã¹ãããåäœã®å³å¯ããæ±ºå®ããŸãã
noneïŒ ããã¯ããã©ã«ãå€ã§ãã¹ã¯ããŒã«ã¹ãããããªãããšã瀺ããŸããx | y | bothïŒ ã¹ããããçºçãã軞ãŸãã¯è»žãæå®ããŸããæ°Žå¹³ç»åã«ã«ãŒã»ã«ã®å Žåãéåžžã¯xã䜿çšããŸããåçŽã«ç©ã¿éãããããã«ã¹ã¯ãªãŒã³ã»ã¯ã·ã§ã³ã®å Žåã¯ãyã䜿çšããŸããmandatoryïŒ ããã§ã匷åã§ç©çé§åã®ã¹ããããçã«èŒããŸããmandatoryã«èšå®ãããšãã¹ã¯ããŒã«ã³ã³ããã¯åžžã«ã¹ããããã€ã³ãã§åæ¢ããå¿ èŠããããŸããããã¯éåžžã«åŒ·åã§å¶åŸ¡ãããããã²ãŒã·ã§ã³ãšã¯ã¹ããªãšã³ã¹ãæäŸããã«ã«ãŒã»ã«ãããŒãžããšã®ã¹ã¯ããŒã«ã«æé©ã§ããã¢ãŒã¡ã³ã¿ã ãšã³ãžã³ã¯ã匱ãã¹ã¯ããŒã«ãžã§ã¹ãã£ãŒã§ãã³ã³ãã³ããå®å šãªã¹ããããã€ã³ãã«éã³ãŸããproximityïŒmandatoryãããå³å¯ã§ã¯ãªããproximityã¯ãã¹ã¯ããŒã«ã®æçµäœçœ®ãã¹ããããã€ã³ãã«ååã«è¿ââãå Žåã«ã®ã¿ã¹ãããããŸãããååã«è¿ââããã®æ£ç¢ºãªå®çŸ©ã¯ãã©ãŠã¶ã«ãã£ãŠæ±ºå®ããããŠãŒã¶ãŒã«ãããªãèªç±ãäžããªãããã¬ã€ãã³ã¹ãæäŸããŸããããã¯ãæ£ç¢ºãªé 眮ã圹ç«ã€ã絶察ã«å¿ èŠãªããã§ã¯ãªãã€ã³ã¿ãŒãã§ã€ã¹ã«é©ããŠãããããç·©ãããªãæ¢çŽ¢äžå¿ã®æè§Šãå¯èœã«ããŸããã¢ãŒã¡ã³ã¿ã ãšã³ãžã³ã¯åŒãç¶ãé©çšãããŸãããã¹ããããããªã¬ãŒããã®ã«ååè¿ããªãå Žåã¯ããã€ã³ãéã§èªç¶ã«åæ¢ããå¯èœæ§ããããŸãã
䜿çšäŸïŒ .scroll-container { overflow-x: scroll; scroll-snap-type: x mandatory; }
mandatory ãš proximity ã®ã©ã¡ããéžæãããã¯ãéèŠãªèšèšäžã®æ±ºå®ã§ããmandatory ã¯ããŠãŒã¶ãŒãã³ã³ãã³ããããã¯ããæ¬¡ã®ãããã¯ãžãšãã£ãããšã¬ã€ããããæç¢ºã§ã»ã°ã¡ã³ãåããããšã¯ã¹ããªãšã³ã¹ãæäŸããŸããã¢ãŒã¡ã³ã¿ã ãšã³ãžã³ã¯ããã®é·ç§»ãã¹ã ãŒãºã§äºæž¬å¯èœã§ããããšãä¿èšŒããŸããproximity ã¯ããããœãããªææ¡ãæäŸããã¢ãŒã¡ã³ã¿ã ã¯äŸç¶ãšããŠåœ¹å²ãæãããŸããããŠãŒã¶ãŒã¯äžé忢ããã现ããå¶åŸ¡ã§ããŸããã©ã¡ããèªç¶ãªã¹ã¯ããŒã«ç©çåŠã掻çšããŸãããå¶åŸ¡ã®åºŠåããç°ãªããŸãã
2. scroll-snap-align ïŒã¹ã¯ããŒã«ã¢ã€ãã ã«é©çšïŒ
ãã®ããããã£ã¯ãã¹ã¯ããŒã«ã¢ã€ãã ã®ã¹ããããšãªã¢ãã¹ã¯ããŒã«ã³ã³ããã®ã¹ããããšãªã¢å ã§ã©ã®ããã«é 眮ãããããæå®ããŸãã
startïŒ ã¹ã¯ããŒã«ã¢ã€ãã ã®ã¹ããããšãªã¢ã®éå§ããã¹ã¯ããŒã«ã³ã³ããã®ã¹ããããšãªã¢ã®éå§ãšæŽåããŸããããã¯ã巊端ã«å®å šã«é 眮ãããæ°Žå¹³ãªã¹ãã®ã¢ã€ãã ã«ãã°ãã°äœ¿çšãããŸããendïŒ ã¹ã¯ããŒã«ã¢ã€ãã ã®ã¹ããããšãªã¢ã®çµäºããã¹ã¯ããŒã«ã³ã³ããã®ã¹ããããšãªã¢ã®çµäºãšæŽåããŸããcenterïŒ ã¹ã¯ããŒã«ã¢ã€ãã ã®ã¹ããããšãªã¢ã®äžå¿ããã¹ã¯ããŒã«ã³ã³ããã®ã¹ããããšãªã¢ã®äžå¿ãšæŽåããŸããããã«ãããç¹ã«ç»åã®ã£ã©ãªãŒãã«ãŒãã¬ã€ã¢ãŠãã§ãã¢ã€ãã ã®äžå¿ãäž»ãªçŠç¹ãšãªãå Žåã«ãèŠèŠçã«ãã©ã³ã¹ã®åããããã°ãã°å¥œãŸããã¹ããã广ãçãŸããŸããã¢ãŒã¡ã³ã¿ã ãšã³ãžã³ã¯ãã¢ã€ãã ãäžå€®é 眮ã«ã¬ã€ãããŸãã
䜿çšäŸïŒ .scroll-item { scroll-snap-align: center; }
é 眮ã®éžæã¯ãã³ã³ãã³ãã®ãŠãŒã¶ãŒã®èªèã«å€§ãã圱é¿ããŸããã¢ã€ãã ãäžå€®æãã«ãããšã discrete ãªã³ã³ãã³ããããã¯ã®å Žåãæãèªç¶ã«æããããã¢ã€ãã å šäœãããã«è¡šç€ºãããŸããéå§ãŸãã¯çµäºã«é 眮ããããšã¯ããŠãŒã¶ãŒãäž»ã«äžæ¹ã®ç«¯ããããäžæ¹ã®ç«¯ãžãšã¹ãã£ã³ããŠãããªã¹ãã«åœ¹ç«ã¡ãŸãã
3. scroll-padding ïŒã¹ã¯ããŒã«ã³ã³ããã«é©çšïŒ
ãã®ããããã£ã¯ãã¹ã¯ããŒã«ã³ã³ããã®ç«¯ããã®ãªãã»ãããå®çŸ©ããŸããããã¯ãã¹ããããã€ã³ãã广çã«é 眮ãããå Žæã決å®ãããã¹ã¯ããŒã«ã³ã³ããå ã®äžå¯èŠã®ãããã£ã³ã°ããšèããŠãã ãããåºå®ããããŒãããã¿ãŒããããšãã¹ããããããã³ã³ãã³ãã obscuring ãããå Žåã«éåžžã«åœ¹ç«ã¡ãŸãã
䜿çšäŸïŒ .scroll-container { scroll-padding-top: 60px; scroll-padding-bottom: 20px; } ïŒ60px ã®åºå®ããããŒãš 20px ã®åºå®ããã¿ãŒã®å ŽåïŒã
scroll-padding ã¯ãã¢ãŒã¡ã³ã¿ã ãšã³ãžã³ãã³ã³ãã³ããã¹ããããã€ã³ãã«ããããããšãã«ããã®ã³ã³ãã³ããä»ã® UI èŠçŽ ã®èåŸã«é ããªãããã«ããŸããã¹ãããåŸã«è¡šç€ºãããé åããã¶ã€ããŒã®æå³ãããšããã§ããããšãä¿èšŒããã³ã³ãã³ãã®å¯èªæ§ãšã€ã³ã¿ã©ã¯ã·ã§ã³ãæé©åããŸãã
4. scroll-margin ïŒã¹ã¯ããŒã«ã¢ã€ãã ã«é©çšïŒ
scroll-padding ã«äŒŒãŠããŸãããã¹ã¯ããŒã«ã¢ã€ãã èªäœã«é©çšãããŸããscroll-margin ã¯ãã¢ã€ãã å
ã®ã¹ãããã¿ãŒã²ããã®åšãã«ãªãã»ãããäœæããŸããããã¯ãã¹ãããåŸã«ã¢ã€ãã ãã³ã³ãããä»ã®ã¢ã€ãã ã®ç«¯ã« flush ã«è¡šç€ºãããªãããã«ãã¹ããããããã¢ã€ãã ã®åšãã«äœåãªèŠèŠçãªã¹ããŒã¹ã远å ããããã«äœ¿çšã§ããŸãã
䜿çšäŸïŒ .scroll-item { scroll-margin-left: 10px; scroll-margin-right: 10px; }
ã¢ãŒã¡ã³ã¿ã ãšã³ãžã³ãã¢ã€ãã ã衚瀺ãããšãscroll-margin ã¯ãã®åšãã«é©åãªèŠèŠçãªäœè£ãããããšãä¿èšŒããç¹ã« discrete ãªã«ãŒããã»ã¯ã·ã§ã³ãããã¬ã€ã¢ãŠãã§ãããã¯ãªãŒã³ã§ãããã§ãã·ã§ãã«ãªãã¬ãŒã³ããŒã·ã§ã³ã«è²¢ç®ããŸãã
5. scroll-snap-stop ïŒã¹ã¯ããŒã«ã³ã³ããã«é©çšïŒ
ããŸãç¥ãããŠããŸããã匷åãªãã®ããããã£ã¯ããŠãŒã¶ãŒãéãã¹ã¯ããŒã«ããå Žåã«ãã©ãŠã¶ãã¹ããããã€ã³ããã¹ãããã§ãããã©ãããå¶åŸ¡ããŸãã
normalïŒ ããã©ã«ãããŠãŒã¶ãŒã¯ãåäžã®é«éãžã§ã¹ãã£ãŒã§è€æ°ã®ã¹ããããã€ã³ããã¹ã¯ããŒã«ã§ããŸããã¢ãŒã¡ã³ã¿ã ãšã³ãžã³ã¯ãé床ãååã«é«ããã°ãäžéãã€ã³ããè¶ããŠã¹ã¯ããŒã«ãéã³ãŸããalwaysïŒ ãŠãŒã¶ãŒãéãã¹ã¯ããŒã«ããŠãããã©ãŠã¶ã *ãã¹ãŠã®* ã¹ããããã€ã³ãã§åæ¢ããããšã匷å¶ããŸããããã¯éåžžã«æå³çãªãã¹ããããã€ã¹ãããã®ããã²ãŒã·ã§ã³ãæäŸããŸããã¢ãŒã¡ã³ã¿ã ãšã³ãžã³ãåžžã«æ¬¡ã®çŽæ¥ã®ã¹ãããã¿ãŒã²ããã«ãŠãŒã¶ãŒãã¬ã€ãããããšãä¿èšŒããã³ã³ãã³ãã誀ã£ãŠã¹ãããããããšãäžå¯èœã«ããŸãã
䜿çšäŸïŒ .scroll-container { scroll-snap-stop: always; }
scroll-snap-stop: always ã¯ããªã³ããŒãã£ã³ã°ãããŒãã¹ããããã€ã¹ãããã®ãã¥ãŒããªã¢ã«ããŸãã¯é 次ã³ã³ãã³ãæ¶è²»ãæéèŠã§ããããããã·ããªãªã§éåžžã«äŸ¡å€ããããŸããèªç¶ãªã¢ãŒã¡ã³ã¿ã ãæå³ããéèŠãªæ
å ±ããã€ãã¹ããã®ãé²ããã¹ã¯ããŒã«é床ã«é¢ä¿ãªããã¹ãŠã®ãŠãŒã¶ãŒã«ã¬ã€ãä»ããšã¯ã¹ããªãšã³ã¹ãæäŸããŸãã
ã¹ã¯ããŒã«ã¹ãããã®å®è£ ïŒèªç¶ãªç©çåŠã«ããå®è·µçãªæ
ãããã®ããããã£ãã©ã®ããã«é£æºããŠãèªç¶ãªã¢ãŒã¡ã³ã¿ã ãæã€æ°Žå¹³ã¹ã¯ããŒã«ç»åã®ã£ã©ãªãŒãäœæãããã説æããŸãããã倿§ãªå°åã®è£œåãå±ç€ºããã°ããŒãã«ãª e ã³ããŒã¹ãµã€ããæ³åããŠãã ããã
ã¹ããã 1ïŒHTML æ§é
ãŸããã¹ã¯ããŒã«ã³ã³ãããšããã®äžã®è€æ°ã®ã¹ã¯ããŒã«ã¢ã€ãã ãå¿ èŠã§ããåã¢ã€ãã ã¯è£œåç»åãŸãã¯ã«ãŒãã衚ããŸãã
<div class="product-gallery"> <div class="gallery-item"><img src="product-a.jpg" alt="Product A from Europe"><p>Product A</p></div> <div class="gallery-item"><img src="product-b.jpg" alt="Product B from Asia"><p>Product B</p></div> <div class="gallery-item"><img src="product-c.jpg" alt="Product C from Americas"><p>Product C</p></div> <div class="gallery-item"><img src="product-d.jpg" alt="Product D from Africa"><p>Product D</p></div> <div class="gallery-item"><img src="product-e.jpg" alt="Product E from Oceania"><p>Product E</p></div> </div>
ã¹ããã 2ïŒã¹ã¯ããŒã«ã³ã³ããã® CSS
.product-gallery ã³ã³ããã«å¿
é ã®ã¹ã¯ããŒã«ã¹ãããããããã£ãé©çšããŸããæ°Žå¹³ã¹ã¯ããŒã«ãåžæããåã¢ã€ãã ã«æ£ç¢ºã«ã¹ããããããããšèããŠããŸãã
.product-gallery {
display: flex;
overflow-x: scroll;
scroll-snap-type: x mandatory;
scroll-padding: 0 20px; /* ãªãã·ã§ã³ïŒã¹ã¯ããŒã«ã³ã³ããã®ç«¯ã«ããã£ã³ã°ã远å */
-webkit-overflow-scrolling: touch; /* iOS ããã€ã¹ã§ã®ã¹ã ãŒãºãªã¹ã¯ããŒã«çš */
/* ãªãã·ã§ã³ïŒçŸèгã®ããã«ã¹ã¯ããŒã«ããŒãé衚瀺ã«ããããããŒããŒãããã²ãŒã·ã§ã³ãæç¢ºã§ããããšã確èªãã */
scrollbar-width: none; /* Firefox */
-ms-overflow-style: none; /* IE ããã³ Edge */
}
.product-gallery::-webkit-scrollbar {
display: none; /* Chrome, Safari, Opera */
}
ããã§ãdisplay: flex; ã¯ã¢ã€ãã ãæ°Žå¹³ã«é
眮ããŸããoverflow-x: scroll; ã¯æ°Žå¹³ã¹ã¯ããŒã«ãæå¹ã«ããŸããéèŠãªã®ã¯ scroll-snap-type: x mandatory; ã§ãããã¯ãã©ãŠã¶ã« x è»žã«æ²¿ã£ãŠã¹ãããããããã«æç€ºããmandatory ã¯åžžã«ã¢ã€ãã ã«å®ç§ã«çå°ããããšãä¿èšŒããŸãã-webkit-overflow-scrolling: touch; ããããã£ïŒæšæºã§ã¯ãããŸãããåºããµããŒããããŠããŸãïŒã¯ãiOS ããã€ã¹ã§ã®ã¹ã¯ããŒã«ãžã§ã¹ãã£ãŒã®å¿çæ§ãšã¢ãŒã¡ã³ã¿ã ãåäžãããèªç¶ãªç©çåŠã®æè§Šã匷åããŸãã
ã¹ããã 3ïŒã¹ã¯ããŒã«ã¢ã€ãã ã® CSS
次ã«ã.gallery-item ãã¹ããããããã³ã³ããå
ã§ã©ã®ããã«åäœããããå®çŸ©ããŸãã
.gallery-item {
flex: 0 0 80%; /* åã¢ã€ãã ã¯ã³ã³ããå¹
ã® 80% ãå ããŸã */
width: 80%; /* å€ããã©ãŠã¶ã®ãã©ãŒã«ãã㯠*/
margin-right: 20px;
scroll-snap-align: center;
scroll-margin-left: 10px; /* ãªãã·ã§ã³ïŒã¹ããããããã¢ã€ãã ã®åšãã«ã¹ããŒã¹ã远å */
/* å€èгã®ããã®ãã®ä»ã®ã¹ã¿ã€ã« */
background-color: #f0f0f0;
border-radius: 8px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
}
.gallery-item img {
max-width: 100%;
height: auto;
border-radius: 4px;
margin-bottom: 10px;
}
flex: 0 0 80%; ã«ãŒã«ã¯ãåã¢ã€ãã ãã³ã³ããå¹
ã® 80% ãå ããããã«ããè€æ°ã®ã¢ã€ãã ã衚瀺ã§ããããã«ããªãããã1 ã€ãäž»ã«ãã£ãŒãã£ãŒãããããã«ããŸãã scroll-snap-align: center; ã¯ãå .gallery-item ã®äžå¿ããã¹ãããæã« .product-gallery ãã¥ãŒããŒãã®äžå¿ãšæŽåããããšãæå®ããŸããããã«ãããèŠèŠçã«ãã©ã³ã¹ã®åããçŽæçãªãšã¯ã¹ããªãšã³ã¹ãçãŸããŸãã scroll-margin-left ã¯ãã¢ã€ãã ãã¹ããããããåŸã®ééãããã«æŽç·ŽããŸãã
ãã®ã»ããã¢ããã«ããããŠãŒã¶ãŒã補åã®ã£ã©ãªãŒãã¹ã¯ã€ããŸãã¯ã¹ã¯ããŒã«ãããšããã©ãŠã¶ã®ã¢ãŒã¡ã³ã¿ã ãšã³ãžã³ãå¶åŸ¡ãåŒãç¶ããŸããçŽ æ©ãã¹ã¯ã€ãã¯ã1 ã€ä»¥äžã®ã¢ã€ãã ãééããã¹ã ãŒãºã§æžéããã¹ã¯ããŒã«ãéå§ããæçµçã«ã¯ã¢ã€ãã ãå®ç§ã«äžå€®ã«é 眮ãããŠåæ¢ããŸããç©ãããªããã¯ã¯ãåæ§ã«ã¹ã ãŒãºãªæžéã§ãæãè¿ãäžå€®æãã®ã¢ã€ãã ã«éããŸãããã®äžè²«ãããç©çåŠãæèããåäœã¯ãé åçãªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®èšŒã§ãã
ã€ã³ã¿ã©ã¯ã·ã§ã³ã®ç©çåŠïŒã¢ãŒã¡ã³ã¿ã ãšã³ãžã³ã®å éšåäœã®è©³çް
ãŠã§ãéçºè ãšã㊠*äœ* ïŒã¹ããããã€ã³ããšåäœïŒãå®çŸ©ããäžæ¹ã§ããã©ãŠã¶ã®ã¬ã³ããªã³ã°ãšã³ãžã³ã¯ *ã©ã®ããã«* ïŒå®éã®ç©çåŠã·ãã¥ã¬ãŒã·ã§ã³ïŒãåŠçããŸãããã®äœæ¥ã®åæ ã¯ãããã©ãŒãã³ã¹ãšäžè²«æ§ã«ãšã£ãŠéèŠã§ãã
ãŠãŒã¶ãŒå ¥åã®è§£é
ã¢ãŒã¡ã³ã¿ã ãšã³ãžã³ã¯éçãªå®£èšã«åå¿ããã ãã§ãªãããŠãŒã¶ãŒå ¥åã®ãã¥ã¢ã³ã¹ã«åçã«å¿çããŸãã
- ã¿ããã¹ã¯ãªãŒã³ã§ã®ã¹ã¯ã€ãïŒ ã¢ãã€ã«ããã€ã¹ã§ã®åŒ·åã§é«éãªã¹ã¯ã€ãã¯ãã¹ã¯ããŒã«ã«ãåæé床ããããå€ãäžããã¹ããããã€ã³ãã§åæ¢ããåã«ãããé·ããããé¡èãªæžéæ²ç·ããããããŸããçãç©ãããªãã©ãã°ã¯ãããéãæžéã«ã€ãªãããŸãã
- ããŠã¹ãã€ãŒã«ã¹ã¯ããŒã«ïŒ ããŠã¹ãã€ãŒã«ã®å転ã®ãã¯ãªãã¯ãæ°ãŸãã¯é床ããã¹ã¯ããŒã«é床ã«å€æãããŸãããã€ãŒã«ã®çŽ æ©ãããªãã¯ã¯ãç¹ã«
scroll-snap-stop: normalã®å Žåãé倧ãªã¢ãŒã¡ã³ã¿ã 广ãåŒãèµ·ãããè€æ°ã®ã¹ããããã€ã³ããæšªæããå¯èœæ§ããããŸãã - ãã©ãã¯ããããžã§ã¹ãã£ãŒïŒ ææ°ã®ãã©ãã¯ãããã¯ãå€ãã®å Žåãçµã¿èŸŒã¿ã®ã¢ãŒã¡ã³ã¿ã ã¹ã¯ããŒã«ãåããŠããŸããCSS Scroll Snap ãšçµã¿åããããšããã©ãã¯ãããã®ãã€ãã£ãã¢ãŒã¡ã³ã¿ã ããã©ãŠã¶ã®ã¹ãããã¢ãŒã¡ã³ã¿ã ã«ã·ãŒã ã¬ã¹ã«æµãããäºéã« fluid ãªãšã¯ã¹ããªãšã³ã¹ãçãŸããŸãã
- ããŒããŒãããã²ãŒã·ã§ã³ïŒ ããŒããŒãã®ç¢å°ããŒãããŒãžã¢ãã/ããŠã³ã䜿çšããŠãããã©ãŠã¶ã¯ã¹ããããããã»ã¯ã·ã§ã³éãããã²ãŒãããéã«åŸ®åŠãªã€ãŒãžã³ã°å¹æãå°å ¥ããå¶åŸ¡ãããåãã®äžè²«ããæè§Šãç¶æã§ããŸãã
ãã©ãŠã¶ã¯ããããã®å€æ§ãªå ¥åãã€ã³ããªãžã§ã³ãã«ãäžè²«ããç©çããŒã¹ã®ã¢ãŒã·ã§ã³ã«å€æããŸãããã®æœè±¡åã«ãããéçºè 㯠JavaScript ã§è€éãªã€ãã³ããªã¹ããŒãé床èšç®ãã€ãŒãžã³ã°é¢æ°ãå®è£ ããå¿ èŠããªããªããŸããããã«ãããé«åºŠã«æé©åããããã€ãã£ããšã³ãžã³ãåŠçãåŒãç¶ãããšãã§ããŸãã
ãã©ãŠã¶ã¢ã«ãŽãªãºã ãšã€ãŒãžã³ã°é¢æ°
äž»èŠãªåãã©ãŠã¶ïŒChromeãFirefoxãSafariãEdgeïŒã¯ãã¹ã¯ããŒã«ã¢ãŒã¡ã³ã¿ã ã管çããããã®ç¬èªã®é«åºŠã«æé©åãããå éšã¢ã«ãŽãªãºã ãšã€ãŒãžã³ã°é¢æ°ãåããŠããŸããæ£ç¢ºãªæ°åŠæ²ç·ã¯ãããã«ç°ãªãå ŽåããããŸãããç®æšã¯æ®éçã«åãã§ããã€ãŸããçŸå®äžçã®ç©çåŠãæš¡å£ãããèŠèŠçã«ã¹ã ãŒãºã§ãç¥èŠçã«èªç¶ãªæžéãäœæããããšã§ãããããã®é¢æ°ã¯æ¬¡ã®ããã«èšèšãããŠããŸãã
- éãéå§ããé ãçµäºïŒ æžéã¯éåžžç·åœ¢ã§ã¯ãããŸãããease-out æ²ç·ã§ããããšãå€ããã€ãŸãã¹ã¯ããŒã«ã¯æåã«æ¥éã«é ããªããŸãããã¹ããããã€ã³ãã«è¿ã¥ããšããåŸã ã«é ããªããŸããããã¯ãç©äœãã¢ãŒã¡ã³ã¿ã ãå€±ãæ§åãæš¡å£ãã忢ã abrupt ã§ãªãããã«æããããŸãã
- ã¹ããããã€ã³ãã®äºæž¬ïŒ ãšã³ãžã³ã¯ãçŸåšã®é床ãšå©çšå¯èœãªã¹ããããã€ã³ãã«åºã¥ããŠãäºæž¬ãããçå°ç¹ãç¶ç¶çã«èšç®ããŸãããã®äºæž¬æ©èœã«ãããæžéæ²ç· ãåçã«èª¿æŽããæ£ç¢ºã§åªé ãªå°çãä¿èšŒã§ããŸãã
- å®å®æ§ã®ç¢ºä¿ïŒ æçµçãªé çœ®ã¯æ£ç¢ºã§ããã粟床ãäœã JavaScript ããŒã¹ã®ãœãªã¥ãŒã·ã§ã³ã§ããèŠããããããã€ãã广ãé²ããŸãã
ãããã®ãã€ãã£ãæ©èœã掻çšããããšã§ãéçºè ã¯ã«ã¹ã¿ã å®è£ ã®å€å€§ãªåŽåãšæœåšçãªèœãšã穎ãªãã«ãå ç¢ã§ãããã©ãŒãã³ã¹ãé«ããäžè²«ããã¹ã¯ããŒã«ç©çåŠãç²åŸã§ããŸããããã¯ãèªç¶ãªæè§Šãèšèªãæåçéå£ãè¶ ããŠãäžçäžã®ãã¹ãŠã®äººã«çŽæçãªãšã¯ã¹ããªãšã³ã¹ãæäŸããç¹ã§ãç¹ã«ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«æçã§ãã
èªç¶ãªã¹ã¯ããŒã«ç©çåŠã CSS Scroll Snap ãšçµ±åããããšã«ããå ·äœçãªã¡ãªãã
CSS Scroll Snap ãšãã®åºæã®ã¢ãŒã¡ã³ã¿ã ãšã³ãžã³ãæ¡çšããããšã«ããã倿§ãªãŠã§ããããžã§ã¯ããã°ããŒãã«ãªãŠãŒã¶ãŒããŒã¹ã«é¿ã倿°ã®å©ç¹ãããããããŸãã
1. ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ïŒUXïŒã®åäž
- æµåæ§ãšæ¥œããïŒ ã¹ã ãŒãºã§ç©çé§åã®é·ç§»ã«ãããã³ã³ãã³ãã®ããã²ãŒã·ã§ã³ãããæ¥œããæºè¶³ã®ãããšã¯ã¹ããªãšã³ã¹ã«ãªããŸãããŠãŒã¶ãŒã¯ãçŽæçãã€åªé ã«å¿çããã€ã³ã¿ãŒãã§ã€ã¹ãé«ãè©äŸ¡ãããšã³ã²ãŒãžã¡ã³ããé«ããé«å質ã®èªèã«ã€ãªãããŸãããã®ã楜ããã®èŠå ãã¯æ®éçã§ãã
- äºæž¬å¯èœæ§ãšå¶åŸ¡ïŒ ãŠãŒã¶ãŒã¯ãã¹ã¯ããŒã«ãžã§ã¹ãã£ãŒãäºæž¬å¯èœã«å®å šã«æŽåãããã³ã³ãã³ããããã¯ã«ã€ãªããããšãããã«åŠç¿ããŸããããã«ãããæšæž¬ãšãã©ã¹ãã¬ãŒã·ã§ã³ã軜æžããããã©ãŠã¶ãæçµçãªåããã¬ã€ãããŠããéã§ããã€ã³ã¿ãŒãã§ã€ã¹ã®å¶åŸ¡æèŠããŠãŒã¶ãŒã«äžããŸãã
- ã¢ããªã®ãããªæè§ŠïŒ CSS Scroll Snap ã¯ããã€ãã£ãã¢ãã€ã«ããã³ãã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ã§äžè¬çãªã¹ã ãŒãºãªã¢ãŒã¡ã³ã¿ã ã¹ã¯ããŒã«ãæš¡å£ããããšã«ãããWeb ãšãã€ãã£ããã©ãããã©ãŒã éã®ãšã¯ã¹ããªãšã³ã¹ã®ã£ãããåããã®ã«åœ¹ç«ã¡ãŸãããã®èŠªãã¿ãããã«ãããWeb ã¢ããªã±ãŒã·ã§ã³ã¯ããå ç¢ã§çµ±åãããŠããããã«æããããŸãã
2. ã¢ã¯ã»ã·ããªãã£ãšã€ã³ã¯ã«ãŒã·ãã®æ¹å
- æç¢ºãªã³ã³ãã³ãã»ã°ã¡ã³ããŒã·ã§ã³ïŒ èªç¥ã®éãããããŠãŒã¶ãŒãæ§é åãããã³ã³ãã³ãããæ©æµãåãããŠãŒã¶ãŒã«ãšã£ãŠãã¹ãããã«ãã£ãŠæäŸãããæç¢ºãªåºåãã¯ãåã³ã³ãã³ããããã¯ã discrete ã§ç®¡çå¯èœãªåäœãšããŠæç€ºãããããšãä¿èšŒããŸãã
- éåé害ãæã€ãŠãŒã¶ãŒã®ããã®äºæž¬å¯èœãªããã²ãŒã·ã§ã³ïŒ 粟å¯ãªéåå¶åŸ¡ãå°é£ãªãŠãŒã¶ãŒã¯ãæ£ç¢ºãªã¹ã¯ããŒã«ã«èŠåŽããããšããããããŸããã¹ã¯ããŒã«ã¹ããããã³ã³ãã³ããèªåçã«é 眮ããæ©èœã¯ããã¯ã»ã«ããŒãã§ã¯ããªèª¿æŽã®å¿ èŠæ§ãæžãããããã²ãŒã·ã§ã³ãããç°¡åã§ãã©ã¹ãã¬ãŒã·ã§ã³ã®ãªããã®ã«ããŸããã¢ãŒã¡ã³ã¿ã ã¯ã abrupt ãªåæ¢ã§ã¯ãªããç©ãããªåæ¢ãä¿èšŒããŸãã
- ããŒããŒãããã³æ¯æŽæè¡ãã¬ã³ããªãŒïŒ ããŒããŒããŸãã¯ã¹ã¯ãªãŒã³ãªãŒããŒã§ããã²ãŒãããå Žåãå®çŸ©ããããã€ã³ãã«ã¹ãããããããšã§ããã©ãŒã«ã¹ãææ§ãªäžéäœçœ®ã§ã¯ãªããè«ççã«å®å šãªã³ã³ãã³ããããã¯ã«é 眮ãããããšãä¿èšŒãããŸããããã«ãããããäžè²«æ§ããããããã²ãŒãå¯èœãªæ§é ãæäŸãããŸãã
3. é åçãªã³ã³ãã³ããã¬ãŒã³ããŒã·ã§ã³ãšã¹ããŒãªãŒããªã³ã°
- ããžã¥ã¢ã«ã¹ããŒãªãŒããªã³ã°ïŒ ãã«ã¹ã¯ãªãŒã³ç»åããããªããŸãã¯ããã¹ããããã¯ã®ã·ãªãŒãºãéããŠèª¬åŸåã®ããç©èªãäœæããã®ã«çæ³çã§ããåã¹ãããã¯ãæ°ããç« ãŸãã¯æ å ±ã®äžéšãæããã«ããããšã§ããŠãŒã¶ãŒããã¥ã¬ãŒã·ã§ã³ããããšã¯ã¹ããªãšã³ã¹ã«ã¬ã€ãããåœéçãªã¹ããŒãªãŒããªã³ã°ã€ãã·ã¢ããã«æé©ã§ãã
- éäžããæ³šæïŒ ã³ã³ãã³ããåžžã«ç»é¢ã«å®å šã«è¡šç€ºãããããã«ããããšã§ãã¹ã¯ããŒã«ã¹ãããã¯ãŠãŒã¶ãŒã®æ³šæãç»é¢ã®äž»èŠãªèŠçŽ ã«åããæ³šææ£æŒ«ãæå°éã«æããèŠèŠçããã³ããã¹ãæ å ±ã®ã€ã³ãã¯ããé«ããŸãã
- ã€ã³ã¿ã©ã¯ãã£ãã®ã£ã©ãªãŒãšã«ã«ãŒã»ã«ïŒ éçãªç»åã®ã£ã©ãªãŒããæºè¶³ã®ããã€ã³ã¿ã©ã¯ãã£ããªãšã¯ã¹ããªãšã³ã¹ã«å€ããŸãããŠãŒã¶ãŒã¯ã補ååçãããŒããã©ãªãªäœåããŸãã¯ãã¥ãŒã¹ã®èŠåºãããæ¢çŽ¢ãä¿é²ããèªç¶ãªãããŒã§ã¹ã¯ã€ãã§ããŸãã
4. ã¯ãã¹ããã€ã¹ã®äžè²«æ§ãšå¿çæ§
- çµ±äžããããšã¯ã¹ããªãšã³ã¹ïŒ CSS Scroll Snap ã®ãã€ãã£ããã©ãŠã¶å®è£ ã«ãããç°ãªãããã€ã¹ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãããã³å ¥åæ¹æ³å šäœã§äžè²«ããã¹ã¯ããŒã«åäœãä¿èšŒãããŸããã¹ããŒããã©ã³ã®ã¿ãããžã§ã¹ãã£ãŒãã©ãããããã®ãã©ãã¯ãããã¹ã¯ã€ãããŸãã¯ãã¹ã¯ãããã®ããŠã¹ãã€ãŒã«ã¹ã¯ããŒã«ã¯ãã¹ãŠãåæ§ã®ç©çé§åå¿çãããªã¬ãŒããŸãã
- ã¢ãã€ã«ãã¡ãŒã¹ãæé©åïŒ ã¿ããã¹ã¯ãªãŒã³ã®æ®åãèæ ®ãããšãã¹ã¯ããŒã«ã¹ãããã®èªç¶ãªã¢ãŒã¡ã³ã¿ã ã¯ãã¢ãã€ã« Web ãšã¯ã¹ããªãšã³ã¹ã«ç¹ã«æçã§ããããã¯ãææ°ã®ã¹ããŒããã©ã³ãã¿ãã¬ããã®äœ¿çšãã¿ãŒã³ã«ãã€ãã£ãã«æããããã¿ãããã¬ã³ããªãŒãªã€ã³ã¿ã©ã¯ã·ã§ã³ãæäŸããã°ããŒãã«ã«æ¥ç¶ããããªãŒãã£ãšã³ã¹ã«ãšã£ãŠäžå¯æ¬ ã§ãã
5. èªç¥è² è·ãšãŠãŒã¶ãŒç²åŽã®è»œæž
- ç°¡åãªé çœ®ïŒ ãŠãŒã¶ãŒã¯ãã³ã³ãã³ãããã¥ãŒããŒãã«æ£ç¢ºã«é 眮ããããã«ããã¯ã粟ç¥çãªåŽåãå¿ èŠãšããŸããããã©ãŠã¶ã®ã¢ãŒã¡ã³ã¿ã ãšã³ãžã³ãæ£ç¢ºãªé 眮ãåŠçããã³ã³ãã³ãèªäœã®åŠçã®ããã®èªç¥ãªãœãŒã¹ãè§£æŸããŸãã
- åçåãããã¿ã¹ã¯å®äºïŒ ãã«ãã¹ããããã©ãŒã ããªã³ããŒãã£ã³ã°ãããŒããŸãã¯é£ç¶ããŒã¿ãã¬ãŒã³ããŒã·ã§ã³ã®å Žåãã¹ã¯ããŒã«ã¹ããã㯠discrete ãªã¹ããããæç¢ºã«ç€ºãããŠãŒã¶ãŒãåã¹ãããã«æ£ç¢ºã«çå°ããããã«ããããšã§ãé²è¡ãç°¡çŽ åããŸãã
èªç¶ãªã¹ã¯ããŒã«ç©çåŠã®ããã®å€æ§ãªãŠãŒã¹ã±ãŒã¹ãšã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³
CSS Scroll Snap ã®èªç¶ãªã¢ãŒã¡ã³ã¿ã ãšã³ãžã³ã«ããæ±çšæ§ã¯ãããŸããŸãª Web ã€ã³ã¿ãŒãã§ã€ã¹ã«é©çšå¯èœã§ãããããŸããŸãªæ¥çãå°ççå°åå šäœã§æ®éçãªã¡ãªãããæäŸããŸãã
1. E ã³ããŒã¹è£œåã®ã£ã©ãªãŒãšã·ã§ãŒã±ãŒã¹
ã°ããŒãã«ãªãªã³ã©ã€ã³ãã¡ãã·ã§ã³å°å£²åºãæ³åããŠãã ãããç°ãªã倧éžã®ãŠãŒã¶ãŒãçµ¶åŠãªã³ã¬ã¯ã·ã§ã³ãé²èЧããŸãã補åã衚瀺ããéãCSS Scroll Snap ãåããæ°Žå¹³ç»åã®ã£ã©ãªãŒã«ãããé«è§£å床ã®è¡£é¡ã®ç»åãç°¡åã«ã¹ã¯ã€ãã§ããŸããåç»åã¯ãã¹ããããçå°ã®è³ªæããŸãã¯ããŸããŸãªè§åºŠããã®å€èгãªã©ã®è©³çްã匷調ããŠãã¹ã ãŒãºã§æºè¶³ã®ããã¢ãŒã¡ã³ã¿ã ã§ç»é¢ã«å®ç§ã«ã¹ããããããŸãããã®æµãããããªã€ã³ã¿ã©ã¯ã·ã§ã³ã¯ã·ã§ããã³ã°ãšã¯ã¹ããªãšã³ã¹ãåäžããããŠãŒã¶ãŒã¯äžæ£ç¢ºãªã¹ã¯ããŒã«ã«èŠåŽããã®ã§ã¯ãªãã補åã«éäžã§ããŸããäžè²«ããã¹ãããåäœã«ãããæ±äº¬ã®ãã€ãšã³ãã¹ããŒããã©ã³ã䜿çšããŠãããããã³ãã³ã®ãã¹ã¯ãããã³ã³ãã¥ãŒã¿ãŒã䜿çšããŠãããã«é¢ããããã€ã³ã¿ã©ã¯ã·ã§ã³ã¯åæ§ã«çŽæçã§ãã¬ãã¢ã ã«æããããŸãã
2. ã©ã³ãã£ã³ã°ããŒãžããã³ããŒããã©ãªãªã®ãã«ã¹ã¯ãªãŒã³ã»ã¯ã·ã§ã³ããã²ãŒã·ã§ã³
å€åœç±ãã¯ãããžãŒäŒæ¥ã®ã©ã³ãã£ã³ã°ããŒãžãŸãã¯åœéçãªã¢ãŒãã£ã¹ãã®ãªã³ã©ã€ã³ããŒããã©ãªãªãæ€èšããŠãã ãããåã»ã¯ã·ã§ã³ïŒãããžã§ã³ããã補åãããããŒã ãããé£çµ¡å
ããªã©ïŒã¯ããã¥ãŒããŒãå
šäœãå æããŸããåçŽã¹ã¯ããŒã«ã¹ããããš scroll-snap-type: y mandatory; ããã³ scroll-snap-align: start; ã䜿çšãããšãäžäžã«ã¹ã¯ããŒã«ãããšåžžã«æ¬¡ã®ã»ã¯ã·ã§ã³ã®å
é ã«æ£ç¢ºã«çå°ããŸããã¢ãŒã¡ã³ã¿ã ãšã³ãžã³ã¯ãããã®ã»ã¯ã·ã§ã³éãåªé
ã«ç§»è¡ããã·ãããã£ãã¯ã§ã¬ã€ãä»ãã®ã³ã³ãã³ããã¢ãŒãäœæããŸããããã¯ãç·åœ¢ã®ç©èªãäŒããããèŠèŠçãªä¹±éããªãã« discrete ãªæ
å ±ãããã¯ãæç€ºãããããã®ã«ç¹ã«å¹æçã§ãããããŸããŸãªç»é¢ãµã€ãºãè§£å床ãæã€ã°ããŒãã«ãªãŒãã£ãšã³ã¹ã«ãšã£ãŠã³ã³ãã³ããã¢ã¯ã»ã¹å¯èœã§é
åçãªãã®ã«ããŸãã
3. ãã¥ãŒã¹ããã³ãã£ãŒãã®ããã®æ°Žå¹³ã³ã³ãã³ãã«ã«ãŒã»ã«
ã°ããŒãã«ãªãã¥ãŒã¹ã¢ã°ãªã²ãŒã¿ãŒãŸãã¯å€èšèªã³ã³ãã³ããã©ãããã©ãŒã ã¯ããã°ãã°å€æ°ã®èšäºãŸãã¯ãã¬ã³ããããã¯ãã³ã³ãã¯ãã§ã¹ã¯ããŒã«å¯èœãªåœ¢åŒã§è¡šç€ºããå¿
èŠããããŸããCSS Scroll Snap ã䜿çšããæ°Žå¹³ã«ã«ãŒã»ã«ã«ããããŠãŒã¶ãŒã¯ãããã©ã€ã³ãèšäºã«ãŒãããŸãã¯çãèŠçŽãçŽ æ©ãã¹ã¯ã€ãã§ããŸãã scroll-snap-type: x proximity; ã䜿çšãããšããŠãŒã¶ãŒã¯ã³ã³ãã³ããèªç±ã«æ¢çŽ¢ã§ããŸãããç©ãããªã¢ãŒã¡ã³ã¿ã ã«ãããã¹ããããã€ã³ãã®è¿ãã§ã¹ã¯ããŒã«ã忢ããå Žåã§ããã«ãŒããããŸãç»é¢ã«åãŸãããã«ãªããŸãããã®ãã¶ã€ã³ãã¿ãŒã³ã¯ãå°ããªããã€ã¹ã§ã®ç»é¢ã¹ããŒã¹ã®æé©åã«åªããŠããããŠãŒã¶ãŒãäžçäžã®æ°ããã³ã³ãã³ããçºèŠããããã®å¹ççãªæ¹æ³ãæäŸããŸãã
4. ãªã³ããŒãã£ã³ã°ããã»ã¹ããã³ã¹ããããã€ã¹ããããã¥ãŒããªã¢ã«
åœéç㪠SaaS 補åãã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ããŸãã¯æè²ãã©ãããã©ãŒã ã§ã¯ãæ°èŠãŠãŒã¶ãŒããªã³ããŒãã£ã³ã°ããããè€éãªæ©èœãã¬ã€ããããããã«ã¯ãæç¢ºããšæ£ç¢ºããå¿
èŠã§ãããã«ãã¹ããããã¥ãŒããªã¢ã«ã§ã¯ãåçŽã¹ã¯ããŒã«ã¹ããããš scroll-snap-type: y mandatory; ããã³ scroll-snap-stop: always; ã䜿çšã§ããŸãããã®çµã¿åããã«ããããŠãŒã¶ãŒã¯åã¹ããããé æ¬¡è¡šç€ºããå¿
èŠããããŸããæ¿ããã¹ã¯ããŒã«ãžã§ã¹ãã£ãŒã§ããäžéã¹ãããã§åæ¢ãã誀ã£ãŠã¹ãããããã®ãé²ããŸããèªç¶ãªã¢ãŒã¡ã³ã¿ã ã¯äŸç¶ãšããŠåã¹ãããéã®ã¹ã ãŒãºãªé·ç§»ãæäŸããŸããã always ã¹ãããã¯åæ
å ±ã«å®å
šãªéäžãä¿èšŒããããŸããŸãªèšèªçããã³æè²çèæ¯ãæã€ãŠãŒã¶ãŒã«ãšã£ãŠéèŠã§ãã
5. ã«ãŒãããŒã¹ã®ã€ã³ã¿ãŒãã§ã€ã¹ããã³ãã£ãŒãã¹ã¿ã€ã«ã¬ã€ã¢ãŠã
ãœãŒã·ã£ã«ã¡ãã£ã¢ãã©ãããã©ãŒã ãã¬ã·ããµã€ãããŸãã¯ã¹ããªãŒãã³ã°ãµãŒãã¹ã€ã³ã¿ãŒãã§ã€ã¹ã¯ããã°ãã°ã«ãŒãããŒã¹ã®ã¬ã€ã¢ãŠããæ¡çšããŸããããŸããŸãªã³ã³ãã³ãïŒæçš¿ãã¬ã·ããæ ç»ã®ãããããªã©ïŒã®ãã£ãŒãã¯ãåçŽã¹ã¯ããŒã«ã¹ãããã®æ©æµãåããããšãã§ããŸãããŠãŒã¶ãŒãç¡éã«ç¶ãããã«èŠãããã£ãŒããã¹ã¯ããŒã«ãããšããåã³ã³ãã³ãã«ãŒãã¯ããããã scroll-snap-align: start; ãŸã㯠center; ã§ãæ¯é
çãªäœçœ®ã«ã¹ãããã§ããŸããããã«ããããŠãŒã¶ãŒã¯ãã£ãŒãå
ã®åã
ã®ã¢ã€ãã ããã°ããèå¥ããéäžããããšãã§ããã¹ãã£ã³ããã»ã¹ãããå¹ççã§å§åããã«ãããªããŸããã¢ãŒã¡ã³ã¿ã ãšã³ãžã³ã¯ããã®ã¬ã€ãä»ãéäžããå
¥åæ¹æ³ã«é¢ä¿ãªããã¹ã ãŒãºã§ç®ç«ããªãåãã§éæãããããšãä¿èšŒããŸãã
å®è£ ã®ããã®é«åºŠãªèæ ®äºé ãšãã¹ããã©ã¯ãã£ã¹
CSS Scroll Snap ã¯åŒ·åã§ããããã®æé©ãªå®è£ ã«ã¯ãã°ããŒãã«ãªãŒãã£ãšã³ã¹ã«ãšã£ãŠå ç¢ã§ãããã©ãŒãã³ã¹ãé«ããã€ã³ã¯ã«ãŒã·ããªãšã¯ã¹ããªãšã³ã¹ã確ä¿ããããã«ãããŸããŸãªèŠå ãæ éã«æ€èšããå¿ èŠããããŸãã
1. JavaScript ãšã®çµã¿åããïŒæ éã«ïŒ
CSS Scroll Snap ã¯å®£èšçãªãœãªã¥ãŒã·ã§ã³ã§ãããã»ãšãã©ã®éåŽåã¯ãã©ãŠã¶ãåŠçããŸããããã¯äžè¬çã«ããã©ãŒãã³ã¹ã®ããã«å¥œãŸããŸãããã ããJavaScript ã¯ç¹å®ã®ã·ããªãªã§ã¹ã¯ããŒã«ã¹ãããã *匷åãã* ããšãã§ããŸããã*眮ãæãã* ããšã¯ã§ããŸããã
- åçã³ã³ãã³ãèªã¿èŸŒã¿ïŒ ãŠãŒã¶ãŒãã¹ã¯ããŒã«ããã«ã€ããŠã¹ã¯ããŒã«ã³ã³ãããæ°ããã¢ã€ãã ãèªã¿èŸŒãå ŽåïŒäŸïŒç¡éã¹ã¯ããŒã«ïŒãJavaScript ã¯ãŠãŒã¶ãŒãçµããã«è¿ã¥ããŠããããšãæ€åºããããæ°ããã³ã³ãã³ããååŸããããã¹ã¯ããŒã«ã¹ããããã€ã³ããåè©äŸ¡ãããããããã«å¿ èŠã§ãã
- ã«ã¹ã¿ã ããã²ãŒã·ã§ã³ã€ã³ãžã±ãŒã¿ãŒïŒ ã®ã£ã©ãªãŒã®å ŽåãçŸåšã¹ããããããã¢ã€ãã ã瀺ãèŠèŠçãªããããŸãã¯ç¢å°ãèšããå ŽåããããŸããJavaScript ã¯
scrollendã€ãã³ãããªãã¹ã³ãããïŒãŸãã¯scrollã€ãã³ãã«åºã¥ããŠã¢ã¯ãã£ããªã¢ã€ãã ãèšç®ãããïŒããŠããããã®ã€ã³ãžã±ãŒã¿ãŒãæŽæ°ã§ããŸãã - åæãšè¿œè·¡ïŒ ãŠãŒã¶ãŒãã©ã®ã¢ã€ãã ã«ã¹ãããããŠãããããŸãã¯åã¹ããããããã¢ã€ãã ãã©ã®ãããã®æé衚瀺ããŠãããã远跡ããããã«ãJavaScript ã¯ãã詳现ãªããŒã¿åéã®ããã®ã€ãã³ããªã¹ããŒãæäŸã§ããŸãã
éèŠãªã®ã¯ãJavaScript ãæ§ããã«äœ¿çšããCSS ã§ã¯éæã§ããªãæ©èœã«ã®ã¿äœ¿çšããããšã§ããã³ã¢ã¹ã¯ããŒã«ããžãã¯ã« JavaScript ã«é床ã«äŸåãããšãCSS Scroll Snap ã®ããã©ãŒãã³ã¹äžã®å©ç¹ãç¡å¹ã«ãªããã¢ãŒã¡ã³ã¿ã ã®æè§Šã«äžè²«æ§ã®ãªãåé¡ãçºçããå¯èœæ§ããããŸãã
2. ããã©ãŒãã³ã¹ãžã®åœ±é¿
CSS Scroll Snap ã®äž»ãªå©ç¹ã® 1 ã€ã¯ããã®ããã©ãŒãã³ã¹ã§ããããã¯ãã©ãŠã¶ã®ã¬ã³ããªã³ã°ãšã³ãžã³ã«ãã£ãŠãã€ãã£ãã«åŠçããããããã«ã¹ã¿ã JavaScript ã¹ã¯ããŒã«ãœãªã¥ãŒã·ã§ã³ãããäžè¬çã«æé©åãããŠããŸãããã©ãŠã¶ã¯ã³ã³ããžã¿ãŒã¹ã¬ããã§ã¹ã¯ããŒã«ã¹ããããå®è¡ã§ããããã¯éåžžã«å¹ççã§ãããã¡ã€ã³ã¹ã¬ããã§ã®éã JavaScript å®è¡ã«ãã£ãŠãããã¯ãããå¯èœæ§ãäœããªããŸããããã«ãããããã¹ã ãŒãºãªã¢ãã¡ãŒã·ã§ã³ãããé«ããã¬ãŒã ã¬ãŒããããã³ããå¿çæ§ã®é«ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãå®çŸãããããã¯ã°ããŒãã«ãªãŒãã£ãšã³ã¹ãããŸããŸãªããã€ã¹ïŒãã€ãšã³ããã¹ã¯ãããããå€ãæºåž¯é»è©±ãŸã§ïŒã«ã¢ã¯ã»ã¹ããéã«äžå¯æ¬ ã§ãã
3. ãã©ãŠã¶ã®äºææ§ãšãã©ãŒã«ããã¯
CSS Scroll Snap ã¯ãææ°ã®ãã©ãŠã¶ïŒChromeãFirefoxãSafariãEdgeãOpera ãªã©ïŒå šäœã§åªãããµããŒããåããŠããŸãããã ããå€ããã©ãŠã¶ããŒãžã§ã³ãããããªç°å¢ã®å Žåã¯ã段éçãªäœäžãèæ ®ããããšãéèŠã§ããå®å šãªããªãã£ã«ã¯è€éã§ãããã©ãŒãã³ã¹ã®ãªãŒããŒãããã®ããäžè¬çã«æšå¥šãããŸããããã¹ãããã³ã°æ©èœããªããŠãã³ã³ãã³ãã¯ã¢ã¯ã»ã¹å¯èœã§ããããšãä¿èšŒã§ããŸãã
@supportsã¯ãšãªïŒ CSS@supportsã䜿çšããŠããã©ãŠã¶ããµããŒãããŠããå Žåã«ã®ã¿ã¹ã¯ããŒã«ã¹ãããã¹ã¿ã€ã«ãé©çšããŸããããã«ããããµããŒããããŠããªããã©ãŠã¶ã«å¯ŸããŠãããã©ã«ãã®ãã¹ããããããŠããªãã¬ã€ã¢ãŠããå®çŸ©ã§ããŸãã- ããã°ã¬ãã·ããšã³ãã³ã¹ã¡ã³ãïŒ æšæºçãªã¹ã¯ããŒã«ã§å®å šã«æ©èœããããã«ã¬ã€ã¢ãŠããèšèšãããã®åŸã¹ã¯ããŒã«ã¹ãããããšã³ãã³ã¹ã¡ã³ããšããŠè¿œå ããŸããã¹ãããã³ã°ãé©çšããããã©ããã«ããããããã³ã¢ã³ã³ãã³ããšããã²ãŒã·ã§ã³ã¯æ©èœããå¿ èŠããããŸãã
ããŸããŸãªãã©ãŠã¶ãããã€ã¹ïŒç¹å®ã®å°åã§äžè¬çãªå€ãããŒãžã§ã³ãå«ãïŒå šäœã§ã®åŸ¹åºçãªãã¹ãã¯ãäžè²«æ§ãããã€ã³ã¯ã«ãŒã·ããªã°ããŒãã«ãšã¯ã¹ããªãšã³ã¹ãä¿èšŒããããã«äžå¯æ¬ ã§ãã
4. ããŸããŸãªç»é¢ãµã€ãºã®ããã®ã¬ã¹ãã³ã·ããã¶ã€ã³
ã¹ã¯ããŒã«ã¹ãããã®å®è£ ã¯é©å¿çã§ããã¹ãã§ããã¢ãã€ã«ããã€ã¹ã§ã¢ã€ãã ã«ã¹ãããããæ°Žå¹³ã«ã«ãŒã»ã«ã¯ã倧ããªãã¹ã¯ãããã¢ãã¿ãŒã§ã¯æé©ãªã€ã³ã¿ã©ã¯ã·ã§ã³ã§ã¯ãªããããããŸãããã¡ãã£ã¢ã¯ãšãªã䜿çšããŠãç»é¢ãµã€ãºãåãã«åºã¥ããŠã¹ã¯ããŒã«ã¹ãããããããã£ãé©çšãŸãã¯èª¿æŽã§ããŸãã
/* å°ããç»é¢åãã®ããã©ã«ãïŒæ°Žå¹³ã«ã«ãŒã»ã« */
.product-gallery {
scroll-snap-type: x mandatory;
}
/* ãã倧ããªç»é¢åãïŒæ°Žå¹³ã¹ããããåé€ããããå€ãã®ã¢ã€ãã ã衚瀺ãã */
@media (min-width: 1024px) {
.product-gallery {
scroll-snap-type: none;
display: grid; /* ãŸãã¯ã°ãªããã¬ã€ã¢ãŠãã«æ»ã */
grid-template-columns: repeat(3, 1fr);
gap: 20px;
overflow-x: unset; /* æ°Žå¹³ã¹ã¯ããŒã«ãåé€ */
}
.gallery-item {
width: auto;
margin-right: 0;
scroll-snap-align: none;
}
}
ãã®ã¢ãããŒãã«ããããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãããã€ã¹ã®ã³ã³ããã¹ãã«å¯ŸããŠæé©åãããã¹ããŒããã©ã³ãã¿ãã¬ããããŸãã¯äžçäžã®å€§åãã¹ã¯ãããã¢ãã¿ãŒã䜿çšããŠãããã©ããã«ããããããæãèªç¶ã§å¹ççãªã€ã³ã¿ã©ã¯ã·ã§ã³ãæäŸãããŸãã
5. èŠèŠä»¥å€ã®ã¢ã¯ã»ã·ããªãã£ãã¹ã
ã¹ã¯ããŒã«ã¹ãããã¯ãã°ãã°èŠèŠçãªã¢ã¯ã»ã·ããªãã£ãåäžãããŸãããä»ã®åœ¢æ ã®ã€ã³ã¿ã©ã¯ã·ã§ã³ãžã®åœ±é¿ããã¹ãããããšãäžå¯æ¬ ã§ãã
- ããŒããŒãããã²ãŒã·ã§ã³ïŒ ãŠãŒã¶ãŒãç¢å°ããŒãTabãShift+TabãPage Up/DownãHome/End ã䜿çšããŠã¹ããããããã³ã³ãã³ããããã²ãŒãã§ããããšã確èªããŠãã ãããã¹ããããããç¶æ ã¯ããã©ãŒã«ã¹ç®¡çã«åæ ãããå¿ èŠããããŸãã
- ã¹ã¯ãªãŒã³ãªãŒããŒäºææ§ïŒ ã¹ã¯ãªãŒã³ãªãŒããŒãçŸåšè¡šç€ºãããŠããïŒã¹ããããããïŒã¢ã€ãã ãæ£ããã¢ããŠã³ã¹ãããŠãŒã¶ãŒãã³ã³ãã³ãã®æ§é ãç°¡åã«çè§£ã§ããããšã確èªããŠãã ããã
- ã¢ãŒã·ã§ã³åæžèšå®ïŒ ã¢ãŒã·ã§ã³åæžïŒäŸïŒ
@media (prefers-reduced-motion)ã䜿çšïŒã®ãŠãŒã¶ãŒèšå®ãå°éããŸããã¢ãã¡ãŒã·ã§ã³ãå°ãªãããããŠãŒã¶ãŒã®ããã«ãã¹ã¯ããŒã«ã¹ããããç¡å¹ã«ããããã¢ãŒã¡ã³ã¿ã 广ã匱ããããšãæ€èšããŠãã ãããã¹ã¯ããŒã«ã¹ãããã®ã¢ãŒã¡ã³ã¿ã ã¯ãã°ãã°åŸ®åŠãšèŠãªãããŸããããã®ãªãã·ã§ã³ãæäŸããããšã¯ã€ã³ã¯ã«ãŒã·ãæ§ãåäžãããŸãã
çã«ã°ããŒãã«ãª Web ã¢ããªã±ãŒã·ã§ã³ã¯ãèœåã奜ã¿ã®ã€ã³ã¿ã©ã¯ã·ã§ã³æ¹æ³ã«é¢ä¿ãªãããã¹ãŠã®äººã«ã¢ã¯ã»ã¹å¯èœãªãã®ã§ãã
æœåšçãªèª²é¡ãšæŠç¥çå¶é
CSS Scroll Snap ã¯åŒ·åãªå©ç¹ã«ãããããããåžžã«æé©ãªãœãªã¥ãŒã·ã§ã³ã§ã¯ãªãããŸãã¯æ éãªå®è£ ãå¿ èŠãšããã³ã³ããã¹ãããããŸãã
1. éå°ãªäœ¿çšã¯æå®³ã«ãªãå¯èœæ§ããã
ãã¹ãŠã®ã¹ã¯ããŒã«å¯èœãªé åãã¹ãããã®æ©æµãåããããã§ã¯ãããŸãããé·ãèšäºãã³ãŒããšãã£ã¿ãŒããŸãã¯èªç±åœ¢åŒã®ã³ã³ãã³ãé åã«ã¹ã¯ããŒã«ã¹ããããé©çšãããšãå¶éçã§è¿·æã«æããããå¯èœæ§ããããŸãããŠãŒã¶ãŒã¯åºç¯ãªããã¹ããèªç±ã«ã¹ã¯ããŒã«ããããšãæåŸ ããŠãããä»»æã®ã¹ããããã€ã³ãã«åŒ·å¶ãããšãèªæžã®ãããŒãäžæããããã©ã¹ãã¬ãŒã·ã§ã³ãçããå¯èœæ§ããããŸããã¹ã¯ããŒã«ã¹ãããã¯æ éã«äœ¿çšãããšã¯ã¹ããªãšã³ã¹ãåäžãããå¶åŸ¡ãããããã²ãŒã·ã§ã³ãé©ãã discrete ã§åé¢å¯èœãªã³ã³ãã³ããããã¯ã®ããã«äºçŽããŠãã ããã
2. è€éãªã¬ã€ã¢ãŠãã«ã¯ç²ŸåºŠãå¿ èŠ
éåžžã«åçãŸãã¯ç°åžžã«è€éãªã¬ã€ã¢ãŠãã«ã¹ã¯ããŒã«ã¹ããããçµ±åããã«ã¯ãscroll-padding ããã³ scroll-margin å€ã®ç¶¿å¯ãªèª¿æŽãå¿
èŠã«ãªãå ŽåããããŸãããŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ãç»é¢ãµã€ãºå€æŽããŸãã¯åçããŒã¿ã«ããã³ã³ãã³ããµã€ãºãå€åããå Žåãã¹ããããã€ã³ããäžè²«ããŠå®ç§ã«æŽåãããããã«ããããšãå°é£ã«ãªãå¯èœæ§ããããŸããèªåãã¹ããšããŸããŸãªã·ããªãªã§ã®åŸ¹åºçãªæåã¬ãã¥ãŒãäžå¯æ¬ ã§ãã
3. ãã©ãŠã¶åºæã®ãã¥ã¢ã³ã¹
ã³ã¢æ©èœã¯æšæºåãããŠããŸãããã¢ãŒã¡ã³ã¿ã æ²ç·ãã¹ããããããå€ïŒproximity ã®å ŽåïŒããŸãã¯ã¹ãããã®æ£ç¢ºãªã¿ã€ãã³ã°ã«ã¯ãããŸããŸãªãã©ãŠã¶ãšã³ãžã³éã§åŸ®åŠãªéããååšããå¯èœæ§ããããŸãããããã®éãã¯éåžžãããã§ãããå¹³åçãªãŠãŒã¶ãŒã«ã¯ã»ãšãã©æ°ã¥ãããŸããããéåžžã«æŽç·Žãããããã¯ã»ã«ããŒãã§ã¯ããªãšã¯ã¹ããªãšã³ã¹ã®å Žåãã¯ãã¹ãã©ãŠã¶ãã¹ãã¯äžå¯æ¬ ã§ããããã¯ããŠãŒã¶ãŒãããŸããŸãªãã©ãŠã¶ãå€ãããŒãžã§ã³ãããµã€ãã«ã¢ã¯ã»ã¹ããã°ããŒãã«å±éã«ç¹ã«åœãŠã¯ãŸããŸãã
4. ä»ã®ã¹ã¯ããŒã«åäœãšã®å¹²æž
CSS Scroll Snap ããã¹ã¯ããŒã«ã€ãã³ããŸãã¯ç¹å®ã®ã¹ã¯ããŒã«äœçœ®ã«äŸåããä»ã®ã€ã³ã¿ã©ã¯ãã£ãèŠçŽ ãšç«¶åããªãããã«æ³šæãå¿ èŠã§ããããšãã°ãã¹ã¯ããŒã«äœçœ®ã«åºã¥ããŠå€æŽãããã¹ãã£ãããŒããããŒãããå Žåãã¹ããããããã³ã³ãã³ããšèª¿åããŠçžäºäœçšããããšã確èªããŠãã ãããåæ§ã«ãã«ã¹ã¿ã JavaScript ã¹ã¯ããŒã«ã¢ãã¡ãŒã·ã§ã³ã¯ãã¹ã¯ããŒã«ã¹ããããå°å ¥ããããšãã«åè©äŸ¡ãŸãã¯é©å¿ããå¿ èŠãããå ŽåããããŸãã
ã¹ã¯ããŒã«ã¹ããããš Web ã€ã³ã¿ã©ã¯ã·ã§ã³ã®æªæ¥ã®é¢šæ¯
Web æšæºãé²åãç¶ããã«ã€ããŠãCSS Scroll Snap ã¯ããŠãŒã¶ãŒããªã³ã©ã€ã³ã³ã³ãã³ããšã©ã®ããã«ã€ã³ã¿ã©ã¯ã·ã§ã³ãããã圢æããäžã§ããŸããŸãéèŠãªåœ¹å²ãæããæºåãã§ããŠããŸãããã€ãã£ãããã©ãŒãã³ã¹ãã¢ã¯ã»ã·ããªãã£ãããã³ã·ãŒã ã¬ã¹ãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãžã®éç¹ã¯ãææ°ã® Web éçºååãšå®å šã«äžèŽããŠããŸãã
- æ©èœã®æ¡å€§ïŒ éçºè ãã¢ãŒã¡ã³ã¿ã ãšã³ãžã³ã®ãã©ã¡ãŒã¿ããã现ããå¶åŸ¡ã§ããæ°ãã CSS ããããã£ãç»å Žããã€ãŒãžã³ã°æ²ç·ãæžéçãã«ã¹ã¿ãã€ãºã§ããããã«ãªãå¯èœæ§ããããŸãã
- æ°è UI ãã¿ãŒã³ãšã®çµ±åïŒ æ°ãã UI ãã¿ãŒã³ãç»å Žããã«ã€ããŠãã»ã°ã¡ã³ãåãããçŽæçãªããã²ãŒã·ã§ã³ãäœæãã Scroll Snap ã®èœåã¯ãäžçäžã®éçºè ã«ãšã£ãŠåºæ¬çãªããŒã«ã«ãªããŸãã
- ãŠãŒã¶ãŒæåŸ ã®å¢å ïŒ ãŠãŒã¶ãŒããã€ãã£ãã¢ããªãšåŒ·åããã Web ãšã¯ã¹ããªãšã³ã¹ã®äž¡æ¹ã§æäŸãããæµåæ§ãšäºæž¬å¯èœæ§ã«æ £ããŠããã«ã€ããŠã*ãã¹ãŠã®* Web ã³ã³ãã³ãã«å¯ŸããæåŸ ã¯é«ãŸãç¶ããŸãããã®ã¬ãã«ã®æŽç·Žæ§ãæäŸãã Web ãµã€ãã¯éç«ã€ã§ãããã
- CSS Grid ããã³ Flexbox ãšã®èª¿åïŒ å°æ¥ã®é²æ©ã«ãããScroll Snap ãš CSS Grid ããã³ Flexbox ã®ãããªåŒ·åãªã¬ã€ã¢ãŠãã¢ãžã¥ãŒã«ãšã®çµ±åãããã«æ·±ãŸããæå°éã®åŽåã§æŽç·Žããããã¬ã¹ãã³ã·ãã§ãèªç¶ã«æµãããã¶ã€ã³ãå¯èœã«ãªãå¯èœæ§ããããŸãã
CSS Scroll Snap ã¯ããã€ãã£ãã¢ããªã±ãŒã·ã§ã³ã®è§ŠèŠçã§å¿çæ§ã®é«ãæè§ŠããªãŒãã³ Web ã«ããããããã®å€§ããªäžæ©ã衚ããŠããŸããéçºè ãèŠèŠçã«é åçã§ããã ãã§ãªããæ·±ãçŽæçã§ universally accessible ãªãšã¯ã¹ããªãšã³ã¹ãæ§ç¯ã§ããããã«ããŸãã
çµè«ïŒçã«ã°ããŒãã«ãª Web ã®ããã®èªç¶ãªã¹ã¯ããŒã«ç©çåŠã®æ¡çš
ããèªç¶ã§çŽæç㪠Web ãšã¯ã¹ããªãšã³ã¹ãžã®æ ã¯é£ç¶ããŠãããCSS Scroll Snap ã®ã¢ãŒã¡ã³ã¿ã ãšã³ãžã³ã¯ããã®ãã¹äžã®éèŠãªãã€ã«ã¹ããŒã³ã§ããèªç¶ãªã¹ã¯ããŒã«ç©çåŠãæ¡çšããããšã«ãããéçºè ã¯åã«ã³ã³ãã³ããé 眮ããã ãã§ãªãããŠãŒã¶ãŒã®ã€ã³ã¿ã©ã¯ã·ã§ã³ãçã«åŒ·åããããšããäžæ©é²ãããšãã§ããŸããã¹ã ãŒãºãªæžéãäºæž¬å¯èœãªã¹ãããããããŠããã€ã¹ãå ¥åæ¹æ³å šäœã§ã®äžè²«ããåäœã¯ãããå ç¢ã§ãé åçã§ãçã«ãŠãŒã¶ãŒãã¬ã³ããªãŒãª Web ã«è²¢ç®ããŸãã
ããŸããŸãªããã€ã¹ãèœåãæåçæåŸ ãæã€å€æ§ãªãŠãŒã¶ãŒã§æ§æãããã°ããŒãã«ãªãŒãã£ãšã³ã¹ã«ãšã£ãŠããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã«ãããèªç¶ç©çåŠã®æ®éçãªèšèªã¯éåžžã«äŸ¡å€ããããŸããCSS Scroll Snap ã¯ããã®åŒ·åããããšã¯ã¹ããªãšã³ã¹ãæäŸããã宣èšçã§ãããã©ãŒãã³ã¹ãé«ããã¢ã¯ã»ã¹å¯èœãªæ¹æ³ãæäŸããŸããããããã£ã詊ãããããã®æ°å€ãã®ã¢ããªã±ãŒã·ã§ã³ãæ¢çŽ¢ãããããã®åŒ·å㪠CSS æ©èœã次㮠Web ãããžã§ã¯ãã«è²¬ä»»ãæã£ãŠçµ±åãããããããšã奚å±ããŸããããããããšã§ãäžçäžã®ãã¹ãŠã®äººã«ãšã£ãŠãããæ¥œãããã¢ã¯ã»ã¹å¯èœã§ãèªç¶ã«æµãã Web ã«è²¢ç®ããããšã«ãªããŸãã